package com.gujiangbo.threadpool;

/**
 * 主要用于存放提交的Runnable.该Runnable 是一个BlockedQueue，并且有limit限制。
 */
public interface RunnableQueue {

    /**
     * 任务队列，主要用于缓存提交到线程池中的任务
     *
     * @param runnable
     */
    void offer(Runnable runnable);

    /**
     * 工作线程通过take方法获取Runnable
     *
     * @return
     */
    Runnable take() throws InterruptedException;

    /**
     * 获取任务队列中的任务的数量
     *
     * @return
     */
    int size();
}
